iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Software Development

測試工程師的上線時間:從分析到實戰的刻意練習系列 第 6

Day 06:用測試金字塔破解 Linear 登入流程

  • 分享至 

  • xImage
  •  

前言

今天,我們面臨的挑戰是如何設計出一套完善的測試案例,來檢查 Linear 的登入流程 是否運作正常。這是我們日常測試中經常會遇到的場景,我們需要從不同角度來驗證登入流程的穩定性與安全性。不過,這次我們不會急著討論理論模型,先從頭開始,看看怎麼一步步分析並設計出符合需求的測試案例。

無論是驗證 email 格式、測試密碼的安全性,還是模擬多次登入失敗,這些步驟都至關重要。挑戰在於,如何在有限的時間內,設計出一組完整且覆蓋關鍵點的測試。

挑戰目標

假如你負責測試 Linear 的登入流程,會如何設計測試案例來確保系統的正常運作?別急著想任何理論模型,從需求出發,根據你的直覺設計出一個初步的測試計畫吧!

測試金字塔

Martin Fowler 在 2012 年提出的「測試金字塔」原則。這個方法強調測試案例應該合理地分布在不同層級,以達到最佳的測試策略。透過這樣的分布,我們可以確保自動化測試在不同層面發揮其最大效用,平衡穩定性與靈活性。測試金字塔包含三個層級:

  • 單元測試 (Unit Tests):檢查程式碼中的最小單位,如函式或類別的邏輯正確性。
  • 應用層測試 (Service/API Tests):檢查系統模組之間的互動,確保 API 和服務能正常運作。
  • 端點到端點測試 (End-to-End Tests):模擬用戶操作,確保整個系統流程順暢無誤。

單元測試 (Unit Tests)

單元測試是測試金字塔的基礎,專注於覆蓋程式碼中的「最小單位」。對於登入流程,我們可以透過一些細微的測試來驗證某些特定功能是否正確運作。

範例:檢查 email 格式是否合法

測試目標 測試案例 預期結果
測試 email 格式驗證 測試正確和錯誤的 email 格式 正確 email 格式通過驗證,錯誤 email 被拒絕

目的:單元測試的目的是檢查登入功能中的最小邏輯單位,如 email 格式是否符合標準。這類測試不會涉及到資料庫或伺服器,只是單獨測試特定的函式。

應用層測試

通常系統可能是透過 API 溝通,但也有可能是用 IPC,或是其他不同的協定或架構,我會先用最常見的 API 測試來練習不同系統間在應用層的測試,在練習不同平台 (Web、Machine、Cloud) 的應用程式,並且確認各個服務或模組之間的邏輯能正確運作。

範例:登入 API 的回應是否正確

測試目標 測試案例 預期結果
測試成功登入 用正確 email 和密碼進行登入 API 返回狀態 200,並生成會話

目的:應用層測試的重點在於確保登入 API 能夠在正確的輸入下正常運作,並返回正確的結果。這些測試會涉及系統內部邏輯和模組之間的交互,但不會涉及完整的用戶端操作。

端點到端點測試 (End-to-End Tests)

端點到端點測試模擬用戶的實際操作,測試整個系統的完整流程。在 Linear 登入流程中,這意味著要從輸入 email 和密碼,直到成功登入為止,確保每個步驟都正常進行。

範例:模擬用戶的登入流程

測試目標 測試案例 預期結果
測試完整登入流程 模擬用戶從輸入 email、密碼到登入成功 用戶登入後跳轉至首頁,顯示個人資訊

目的:端點到端點測試的重點在於驗證整個登入流程是否順暢無誤,這包括了前端與後端的互動、API 調用,以及系統整體的運行狀況。

小結

在這次的練習中,我們從功能需求出發,逐步拆解 Linear 的登入流程,並最終引入了測試金字塔的概念來組織這些測試。透過這個模型,我們可以更有效地分配測試資源,確保每一層的測試都能達到最佳效益。希望這個實例能幫助你在日常工作中更好地組織測試工作,並讓你在面對不同測試場景時,能夠靈活應用這些策略。

延伸閱讀


上一篇
Day 05:科基還是柴犬?10 分鐘測試計畫大挑戰!
下一篇
Day 07:探索 Linear 登入的秘密:全面測試
系列文
測試工程師的上線時間:從分析到實戰的刻意練習26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言